package javase_class_250903;

/**
 * ClassName: A
 * Package: javase_class_250903
 * Description:
 *
 * @Author harkjeans
 * @Create 2025/9/3 19:53
 * @Version 1.0
 */
class A{
    A(){
        System.out.println("A类无参构造器");
    }
    A(int a){
        System.out.println("A类有参构造器");
    }
}
class B extends A{
    B(){
        super();//可以省略，调用父类的无参构造
        System.out.println("B类无参构造器");
    }
    B(int a){
//        super(a);//调用父类有参构造
        System.out.println("B类有参构造器");
    }
}
class Test8{
    public static void main(String[] args){
        B b1 = new B();
        B b2 = new B(10);
    }
}
//子类能调用父类属性和方法的原因：通过子类的构造器创建对象时，子类的构造器一定会直接或间接地调用到父类的构造器
//直到调用到object类的构造器为止，正因为调用过子类所有父类的构造器，所以我们会将父类中声明的属性和方法加载到内存中供子类对象使用
//在堆中加载了父类的构造器